package com.ibm.risk.irmp.base.auth.service;

import com.ibm.risk.irmp.base.auth.entity.SystemUser;
import com.ibm.risk.irmp.base.auth.entity.SystemUserBase;
import com.ibm.risk.irmp.base.dict.vo.BizBranchParamVo;
import com.ibm.risk.irmp.common.auth.vo.OrgInfoTree;
import com.ibm.risk.irmp.common.auth.vo.OrgInfoVo;
import com.ibm.risk.irmp.common.vo.PagedResult;

import java.util.List;

public interface IOrganizationService {

    /**
     * 账务机构用户列表
     */
    PagedResult<SystemUserBase> getBizBranchUserList(String bizBranchCode, String username, Integer pageIndex, Integer pageSize);

    List<OrgInfoVo> getOrgListByParentId(String parentId);

    /**
     * 设置业务机构角色关联关系
     * @param branchCode 机构编码
     * @param roles 角色编码列表
     */
    void saveBizBranchRoles(String branchCode, List<String> roles);

    /**
     * 设置业务机构角色关联关系
     * @param branchCode 机构编码
     * @return  List<String> 角色编码列表
     */
    List<String> getBizBranchRoles(String branchCode);

    /**
     * 账务机构用户列表
     */
    PagedResult<SystemUser> findBizBranchUserList(String bizBranchCode, String userName, Integer pageIndex, Integer pageSize);
    PagedResult<OrgInfoVo> findBizBranchList(BizBranchParamVo vo);
    /**
     * 管理机构用户列表
     */
    PagedResult<SystemUserBase> getMngBranchUserList(String bizBranchCode, Integer pageIndex, Integer pageSize);

    /**
     * 账务机构(仅读取一级机构)
     */
    List<OrgInfoTree> getLevel1BizBranch(String consFlag);

    /**
     * 管理机构(仅读取一级机构)
     */
    List<OrgInfoTree> getLevel1MngBranch(String consFlag);
    /**
     * 业务机构树
     */
    List<? extends OrgInfoTree> getBizOrgTree();
}
